/*************************************************************************
	> File Name: 237_hz.cpp
	> Author: zhangxu 
	> Mail: walrus1983@126.com
	> Created Time: 三  7/10 19:43:18 2024
 ************************************************************************/

#include<iostream>
#include <unordered_map>
using namespace std;
#define MSK(n) ((1 << (n + 1)) - 2)

unordered_map<int, int> ind;
int ans[10];

void printResult(int n) {
	for(int i = 0; i < n; i++) {
		if(i) cout << " ";
		cout << ans[i];
	}
	cout << "\n";
}

void dfs(int pos, int k, int n) {
	if(pos == n) {
		printResult(n);
		return ;
	}
	for(int i = k; i; i -= (-i & i)) {
		int j = ind[-i & i];
		ans[pos] = j;
		dfs(pos + 1, k ^ (1 << j), n);
	}
	return ;
}

int main() {
	int n;
	cin >> n;
	for(int i = 0; i <= n + 2; i++) {
		ind[1 << i] = i;
	}
	dfs(0, MSK(n), n);
	return 0;
}

// int arr[10], mark[10] = {0};

// void print_result(int n) {
// 	for(int i = 0; i < n; i++) {
// 		if(i)  cout << " ";
// 		cout << arr[i];
// 	}
// 	cout << endl;
// 	return ;
// }

// void func(int pos, int n) {
// 	if(pos == n) {
// 		print_result(n);
// 		return ;
// 	}
// 	for(int i = 1; i <= n; i++) {
// 		if(mark[i]) continue;
// 		arr[pos] = i;
// 		mark[i] = 1;
// 		func(pos + 1, n);
// 		mark[i] = 0; 
// 	}
// 	return ;
// }

// int main() {
// 	int n;
// 	cin >> n;
// 	func(0, n);
// 	return 0;
// }